/*
 * @Descripttion: 
 * @version: 
 * @Author: TT
 * @Date: 2023-10-21 09:29:00
 * @LastEditors: TT
 * @LastEditTime: 2023-10-21 09:53:02
 */

import 'package:flutter/material.dart';
import 'package:hzy_normal_tool/hzy_normal_tool.dart';

abstract class CommonLessWidget extends StatelessWidget with HzyBodyMixin {
  const CommonLessWidget({
    super.key,
  });

  /*  
   * 整个widget 包裹属性 
   * createScallBody() 
   *   createSafeArea() /// 是否需要被Safe包裹 (默认false)
   *     createSafeBody() /// 是否需要被暂位图包裹(默认falase)
   *       createBody() /// 最底层的widget 需要使用者必须实现
   *  
   */

  @override
  Widget build(
    BuildContext context,
  ) {
    return createScallBody(
      context: context,
    );
  }

  /// 是否需要安全区域widget包裹
  /// 默认false
  @override
  bool configIsNeedSafeArea() {
    return false;
  }

  /// 是否需要占位图
  /// 默认false
  @override
  bool configIsNeedPlaceHolder() {
    return false;
  }
}

/*
 * 使用事例
 * 具体属性配置
 * 需要根据自身需求去配置
 * 默认情况,只会创建一个纯粹的widget
*/
class TestLessWidget extends CommonLessWidget {
  const TestLessWidget({super.key});

  @override
  Widget createBody({
    required BuildContext context,
    BoxConstraints? constraints,
  }) {
    throw UnimplementedError();
  }

  /// 是否需要安全区域
  @override
  bool configIsNeedSafeArea() {
    return true;
  }

  /// 是否打开顶部安全区域
  @override
  bool configSafeAreaTop() {
    return true;
  }

  /// 是否打开底部安全区域
  @override
  bool configSafeAreaBottom() {
    return true;
  }

  /// 是否需要占位图
  @override
  bool configIsNeedPlaceHolder() {
    return true;
  }

  /// 配置界面状态
  @override
  configPageState() {
    return PageState.initializedState;
  }

  /// 创建缺省页
  @override
  Widget? createEmptyWidget() {
    return null;
  }

  /// 创建加载界面
  @override
  Widget? createLoadingWidget() {
    return null;
  }

  /// 配置是否显示加载界面
  @override
  bool configIsshowLoading() {
    return false;
  }
}
